extends CharacterBody2D
@export var min_speed: float = 850.0;    # 最低安全速度
@export var max_speed: float = 1000.0;   # 最高安全速度
@export var base_acceleration: float = 0.0;  # 基础玩家给予加速度
@export var environmental_acceleration: float = 0.0; #环境给与加速度
@export var acceleration: float = environmental_acceleration+base_acceleration; #最终加速度
@export var camera_force_multiplier: float = 0.5;  # 摄像机摇晃对加速度的影响系数
@export var current_speed: float =900; #当前速度
@onready var speed: Label = $Camera2D/速度;
@onready var camera: Camera2D = $Camera2D ; # 获取子节点Camera2D的实例
@export var camera_initial_rotation_deg: float = 0.0 ; # 相机初始旋转角度（度）
@export var is_in_mailing_area: bool = false;  # 标记是否在邮件区域内
func _ready() -> void:
	print("脚本初始化成功");
		# 记录相机初始旋转角度（作为基准）
	camera_initial_rotation_deg = rad_to_deg(camera.rotation);
	#speed.text = "%.1f" % current_speed;
func _physics_process(delta: float) -> void:
	#检测是否进入检查点
	if is_in_mailing_area and Input.is_action_just_pressed("mailing"):
		print("发送成功");
		is_in_mailing_area=false;
#检测输入，调整基础加速度

	if Input.is_action_just_pressed("speed_up"):
		#base_acceleration += 1.0;
		current_speed+=1.5;
		print("当前速度:", current_speed, " 最终加速度:", acceleration);
	elif Input.is_action_just_pressed("speed_down"):
		#base_acceleration -= 1.0;
		current_speed-=1.5;
		print("当前速度:", current_speed, " 最终加速度:", acceleration);
	#实时更新最终加速度（基础+环境）
	update_environmental_acceleration();
	#speed.text = str("%.1f" % current_speed);
	acceleration = environmental_acceleration + base_acceleration;
	current_speed += acceleration * delta;
	velocity.x=current_speed;
	move_and_slide();
# 根据相机旋转角度更新环境加速度
func update_environmental_acceleration():
	# 计算相机当前旋转相对于初始位置的偏移角度（度）
	var camera_current_rotation_deg = rad_to_deg(camera.rotation);
	var rotation_offset_deg = camera_current_rotation_deg - camera_initial_rotation_deg;

	# 按5度为单位取整（不足5度按5度算）
	var step_deg = 5.0;
	var offset_step = round(rotation_offset_deg / step_deg) * step_deg;  # 取整到5的倍数

	# 根据方向计算环境加速度：顺时针（偏移为正）每5度-1；逆时针（偏移为负）每5度+1
	environmental_acceleration = (-offset_step / step_deg) * camera_force_multiplier;
	# 示例：偏移+5度 → -1；偏移-5度 → +1；偏移+10度 → -2；偏移-10度 → +2
#进入检查点
# 进入Area2D区域时调用
func _on_area_2d_body_entered(body: Node2D) -> void:
	print("进入邮件区域")
	is_in_mailing_area = true


# 离开Area2D区域时调用
func _on_area_2d_body_exited(body: Node2D) -> void:
	
	is_in_mailing_area = false
	print("离开邮件区域")
